package biz.datalk.industrialland.common.log.config;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 *
 *
 * @author tarofang@163.com
 * @date 2020-06-24
 *
 */
@ConfigurationProperties("log-task-executor")
@Getter
@Setter
@ToString
public class LogTaskProperties {
    private boolean enable = true;
    /** 核心线程数量，线程池创建时候初始化的线程数 */
    private int corePoolSize = 8;
    /** 最大线程数，只有在缓冲队列满了之后才会申请超过核心线程数的线程 */
    private int maxPoolSize = 16;
    /** 缓冲队列，用来缓冲执行任务的队列 */
    private int queueCapacity = 1000;
    /** 当超过了核心线程出之外的线程在空闲时间到达之后会被销毁 */
    private int keepAliveSeconds = 60;
    /** 线程名字前缀 */
    private String threadNamePrefix = "SAVE-LOG-TASK-";
    /** 用来设置线程池关闭的时候等待所有任务都完成再继续销毁其他的Bean */
    private boolean waitForTasksToCompleteOnShutdown = true;
    /** 该方法用来设置线程池中任务的等待时间，如果超过这个时候还没有销毁就强制销毁，以确保应用最后能够被关闭，而不是阻塞住 */
    private int awaitTerminationSeconds = 60;
    /** 同一时刻，最大线程执行数 */
    private int semaphoreNum = 4;
    /** 限速器 每秒最多允许同时执行线程数*/
    private int rateLimiterPermitsPerSecond = 4;
}
